<template>
  <!--定义表格，绑定rowSelection选择行属性-->
  <BasicTable @register="registerTable" >
    <!--操作栏-->
    <template #action="{ record }">
      <TableAction :actions="getTableAction(record)" />
    </template>
  </BasicTable>
</template>

<script lang="ts" setup>
export default {
  name: "DeviceDrawer"
}//定义表格列
const columns: BasicColumn[] = [
  {
    title: '数据终端',
    dataIndex: 'name',
    key: 'name',
    resizable: true,
  },
  {
    title: '编号',
    dataIndex: 'no',
    key: 'no',
  },
  {
    title: '坐标',
    dataIndex: 'coordinate',
    key: 'coordinate',
  },
];
enum Api {
  list = '/yc/web/terminal/listCoordinateIsNull',
    save='/yc/web/terminal/add',
    edit='/yc/web/terminal/edit',
    deleteOne = '/yc/web/terminal/delete',
    deleteBatch = '/yc/web/terminal/deleteBatch',
    importExcel = '/yc/web/terminal/importExcel',
    exportXls = '/yc/web/terminal/exportXls',
}
//ajax请求api接口
const demoListApi = (params) => {
  params.mark = 'isNull';
  return defHttp.get({ url: Api.list, params });
};
// 列表页面公共参数、方法
const { tableContext } = useListPage({
  designScope: 'basic-table-demo',
  tableProps: {
    title: '可选择表格',
    api: demoListApi,
    columns: columns,
    formConfig: {
      //labelWidth: 120,
      schemas: [
        {
          label: "名称",
          field: 'name',
          component: 'Input',
          //colProps: {span: 6},
        },

      ],
    },
    rowkey:"id",
    //定义rowSelection的类型，默认是checkbox多选，可以设置成radio单选
    //rowSelection: { type: 'checkbox' },
    //showActionColumn: false
  },
});


/**BasicTable绑定注册 ，返回reload 刷新方法、rowSelection行选择属性、
 selectedRows选中的行信息、selectedRowKeys 选中的行rowkey */
const [registerTable, { reload }, { rowSelection, selectedRows, selectedRowKeys }] = tableContext;


/**
 * 操作栏设置，可配置编辑、删除等各种操作方式，其他使用方式参考文档中的 `内置组件`内容
 */
function getTableAction(record): ActionItem[] {
  return [
    {
      label: '确认',
      onClick: handleEdit.bind(null, record),
    },
  ];
}
const parentMethod = inject('parentMethod');

// 确保 parentMethod 存在，否则提供一个备用值或抛出错误
if (!parentMethod) {
  throw new Error('Parent method is not provided!');
}
// 使用 inject 接收数据
/**使用高德点击地图后的坐标*/
const APP_coordinate = inject('APP_coordinate');
const APP_addMapMarker = inject('APP_addMapMarker');
if (!APP_addMapMarker) {
  console.error('未提供 APP_addMapMarker');
}
async function handleEdit(record) {
  /*console.log(record);
  console.log(selectedRows.value);
  console.log(selectedRowKeys.value);
  parentMethod(record);*/
  let params = {id:record.id,coordinate:APP_coordinate.value}
  await defHttp.post({url: Api.edit , params});
  await reload();
  record.coordinate = APP_coordinate.value;
  APP_addMapMarker.value(record);
}

</script>

<style scoped>

</style>
